home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 2000 August: Tool Chest / Dev.CD Aug 00 TC Disk 2.toast / mac / Sample Code / Human Interface Toolbox / ControlStripSample / SAL ƒ / SAL_Public.h next >
Encoding:
C/C++ Source or Header  |  2000-06-23  |  14.6 KB  |  426 lines  |  [TEXT/CWIE]

  1. #ifndef SAL_PUBLIC_H
  2. #define SAL_PUBLIC_H
  3. /***************************************************************************\
  4. |***************************************************************************|
  5. |                                                                            |
  6. |     SimpleApp Framework: A Simple Application Framework                        |
  7. |        by Apple Macintosh Developer Technical Support                        |
  8. |                                                                            |
  9. |    File Name:    SAL_Public.h                                                |
  10. |                                                                            |
  11. |    Contains:    SimpleAppLib public interface                                |
  12. |                                                                            |
  13. |    DRI: George Warner, Apple Developer Technical Support (dts@apple.com)    |
  14. |                                                                            |
  15. |    Copyright:    © 1999 by Apple Computer,Inc., all rights reserved.            |
  16. |                                                                            |
  17. |    You may incorporate this sample code into your applications without        |
  18. |    restriction, though the sample code has been provided "AS IS" and the    |
  19. |    responsibility for its operation is 100% yours.  However, what you are    |
  20. |    not permitted to do is redistribute the source as "Apple Sample Code"    |
  21. |    after having made changes. If you're going to re-distribute the source,    |
  22. |    we require that you make it clear in the source that the code was        |
  23. |    descended from Apple Sample Code, but that you've made changes.            |
  24. |                                                                            |
  25. | **************************************************************************|
  26. |            C h a n g e        H i s t o r y (most recent first):                |
  27. | **************************************************************************|
  28. |        Vers      Date        Author        Description                            |
  29. |        ----    --------    ------    ----------------------------------------|
  30. |        2.0         8/10/99     gaw    Converted to C                            |
  31. |        1.0         4/ 1/94     mxm    Initial version                            |
  32. |***************************************************************************|
  33. \***************************************************************************/
  34.  
  35. /************************************************************\
  36. |*    NOTICE: This is an minimun header file for SAL;            *|
  37. |*            It's just enough to build the sample apps.        *|
  38. |*            SAL is a work in progress; we'll release more    *|
  39. |*            as we write it.                                    *|
  40. \************************************************************/
  41.  
  42. #if PRAGMA_ONCE
  43. #pragma once
  44. #endif
  45.  
  46. #ifdef __cplusplus
  47. extern "C"
  48. {
  49. #endif
  50.  
  51. #if PRAGMA_IMPORT
  52. #pragma import on
  53. #endif
  54.  
  55. #if PRAGMA_STRUCT_ALIGN
  56. #pragma options align=mac68k
  57. #elif PRAGMA_STRUCT_PACKPUSH
  58. #pragma pack(push, 2)
  59. #elif PRAGMA_STRUCT_PACK
  60. #pragma pack(2)
  61. #endif
  62.  
  63. #include <Controls.h>
  64. #include <Lists.h>
  65. /**\
  66. |**|    Typedefs, defines, enums, structs, etc.
  67. \**/
  68.  
  69. enum
  70. {
  71.     kSAL_ErrorBase = 0,                        //  Base value for ErrorNumbers
  72.     kSAL_StandardDebugAlert = 9999,
  73.     kSAL_NonFatalError = 0,
  74.     kSAL_FatalError = kSAL_ErrorBase - 1,
  75.     kSAL_BadSelectorErr = kSAL_ErrorBase - 2,
  76.     kSAL_BadProcPtr = kSAL_ErrorBase - 3,
  77.     kSAL_NotOurWindowError = kSAL_ErrorBase - 4,
  78.     kSAL_NotValidObject = kSAL_ErrorBase - 5
  79. };
  80.  
  81.  
  82. enum
  83. {
  84.     kSAL_UseStandardMenu = true,
  85.     kSAL_MenuStartID = 127,
  86.     kSAL_AppleNum = 128,
  87.     kSAL_FileNum = 129,
  88.     kSAL_EditNum = 130,
  89.     kSAL_EditMenu = 3,
  90.     kSAL_UndoItem = 1,
  91.     //kSAL_Undefined = 2,
  92.     kSAL_CutItem = 3,
  93.     kSAL_CopyItem = 4,
  94.     kSAL_PasteItem = 5,
  95.     kSAL_ClearItem = 6
  96. };
  97.  
  98. //key navigation
  99. enum
  100. {
  101.     kSAL_NoKey = 0,
  102.     kSAL_NoCommandKey = 0,
  103.     kSAL_UpArrow = 30,
  104.     kSAL_DownArrow = 31,
  105.     kSAL_EnterKey = 3,
  106.     kSAL_ReturnKey = 13,
  107.     kSAL_TabKey = 9
  108. };
  109.  
  110. //List Flags
  111. enum
  112. {
  113.     kSAL_ListDrawFrame = 1,
  114.     kSAL_ListVScroll = 2,
  115.     kSAL_ListHScroll = 4,
  116.     kSAL_ListCustomLDEF = 8,
  117.     kSAL_ListDrawingOn = 16,
  118.     kSAL_ListHasGrow = 32,
  119.     kSAL_ListWantsDrag = 64,
  120.     kSAL_StandardList = kSAL_ListDrawFrame + kSAL_ListVScroll + kSAL_ListDrawingOn
  121. };
  122.  
  123.  
  124. enum
  125. {
  126.     kSAL_MagicSig = 0x4D584D21,                // 'MXM!' our magic signature
  127.     kSAL_MaxMenus = 20,
  128.     kSAL_MaxMenuItems = 128,
  129.     kSAL_MaxButtons = 128,
  130.     kSAL_MaxEventProc = 10,
  131.     kSAL_AppleEventLoadingErr = 129,
  132.     kSAL_EventPassThru = true,// This lets the event pass thru to the default handler
  133.     kSAL_EventOverRide = false,                // This overides the event and doesn't call to the default handler
  134.     kSAL_ResultNoErr = noErr,
  135.     kSAL_ResultPassThru = 1,
  136.     kSAL_ResultOverride = 0,
  137.     kSAL_DefaultStackSize = (SInt32)(24 * 1024),
  138.     kSAL_Margin = 5
  139. };
  140.  
  141. typedef Str255                StringArray[];
  142. typedef StringArray*        StringArray_Ptr;
  143. typedef StringArray_Ptr*    StringArray_Hdl;
  144.  
  145. typedef ControlHandle        ControlArray[];
  146. typedef ControlArray*        ControlArray_Ptr;
  147. typedef ControlArray_Ptr*    ControlArray_Hdl;
  148.  
  149. // Opaque references
  150. typedef struct ButtonItem_Struct**    ButtonItemRef;
  151. typedef struct Group_Struct**        GroupRecRef;
  152. typedef struct ListItem_Struct**    ListItemRef;
  153. typedef struct ObjectItem_Struct**    ObjectRef;
  154. typedef struct WindowItem_Struct**    WindowItemRef;
  155.  
  156. // ProcPtr's
  157. typedef pascal void        (*SalAction_ProcPtr)(const ControlHandle pCtrlHdl,
  158.                                          const SInt16 pPart);
  159.  
  160. typedef pascal OSErr    (*SalButtonHit_ProcPtr)(const ButtonItemRef pButtonItemRef,
  161.                                              const SInt32 pModifiers);
  162.  
  163. typedef pascal OSErr    (*SalButtonUpdate_ProcPtr)(const SInt32 pModifiers);
  164. typedef pascal OSErr    (*SalEvent_ProcPtr)(const EventRecord* pEventPtr);
  165. typedef pascal Boolean    (*SalAbout_ProcPtr)(const SInt32 pData);
  166.  
  167. typedef pascal OSErr    (*SalListHit_ProcPtr)(const Boolean pIsDoubleClick,
  168.                                            const Point pCell,
  169.                                            const Rect* pBounds,
  170.                                            const ListItemRef pListItemRef);
  171.  
  172. typedef pascal OSErr    (*SalListTrack_ProcPtr)(const EventRecord* pEventPtr,
  173.                                              const ListItemRef pListItemRef);
  174.  
  175. typedef pascal OSErr    (*SalListUpdate_ProcPtr)(const RgnHandle pUpdateRgn_Hdl,
  176.                                               const ListItemRef pListItemRef);
  177.  
  178. typedef pascal void        (*SalListDrawCell_ProcPtr)(const Point pCell,
  179.                                                const Rect* pBounds,
  180.                                                const ListItemRef pListItemRef);
  181.  
  182. typedef pascal OSErr    (*SalListIdle_ProcPtr)(const EventRecord* pEventPtr,
  183.                                             const ListItemRef pListItemRef);
  184.  
  185. typedef pascal OSErr    (*SalListKey_ProcPtr)(EventRecord* pEventPtr,
  186.                                            ListItemRef pListItemRef);
  187.  
  188. typedef pascal OSErr    (*SalMenuEvent_ProcPtr)(const SInt32 pMenuResult);
  189. typedef pascal OSErr    (*SalMenuHit_ProcPtr)(const SInt32 pModifiers);
  190. typedef pascal OSErr    (*SalMenuUpdate_ProcPtr)(const SInt32 pModifiers);
  191.  
  192. typedef pascal OSErr    (*SalWindowHit_ProcPtr)(const WindowItemRef pWIR,
  193.                                              const EventRecord* pEventPtr);
  194.  
  195. typedef pascal OSErr    (*SalWindowUpdate_ProcPtr)(const SInt32 pModifiers);
  196. typedef pascal OSErr    (*SalWindowResize_ProcPtr)(const WindowPtr pWindowPtr);
  197.  
  198.  
  199. typedef pascal Boolean    (*SalGroupPreHit_ProcPtr)(const SInt32 pModifiers,
  200.                                                  const Point pPoint,
  201.                                                  const ControlArray_Ptr pCAP,
  202.                                                  const SInt16 pCount);
  203.  
  204. typedef pascal OSErr    (*SalGroupPostHit_ProcPtr)(const SInt32 pModifiers,
  205.                                                 const ControlHandle pCtrl_Hdl,
  206.                                                 const ButtonItemRef pBIR,
  207.                                                 const SInt16 pItem);
  208.  
  209. typedef pascal OSErr    (*SalGroupUpdate_ProcPtr)(const WindowPtr pWindowPtr,
  210.                                                const GroupRecRef pGroupRecRef);
  211.  
  212. /**\
  213. |**|    external globals
  214. \**/
  215.  
  216. extern SInt16            gSAL_NumberOfWindows;
  217. extern WindowPtr        gSAL_CurrentWindow;
  218. extern WindowItemRef    gSAL_CurrentWindowItemRef;
  219. extern ControlHandle    gSAL_CurrentControl;
  220. extern ListHandle        gSAL_CurrentList;
  221.  
  222. extern TextStyle        gSAL_DefaultStyle;
  223. extern TextStyle        gSAL_TextStyle;
  224.  
  225. extern SysEnvRec        gSAL_Mac;
  226.  
  227. /**\
  228. |**|    external function prototypes
  229. \**/
  230. //-----------------------------------------------------------------------------
  231. //    Application
  232. //-----------------------------------------------------------------------------
  233. // Initialize SimpleApp
  234. extern pascal void SAL_InitSimpleApp(const SInt16 pMasters,
  235.                                      const Boolean pWantsStandardMenu);
  236. // Run
  237. extern pascal void SAL_Run(void);
  238.  
  239. extern pascal OSErr SAL_AddStringToList(const ListHandle pListID,
  240.                                         const Str255 pStr255);
  241.  
  242. // Get & Set the print area
  243. extern pascal void SAL_GetPrintArea(const WindowPtr pWindowPtr,
  244.                                     Rect* pBounds);
  245. extern pascal void SAL_SetPrintArea(const WindowPtr pWindowPtr,
  246.                                     const Rect* pBounds);
  247.  
  248. // Print no CR
  249. extern pascal void SAL_Print(const StringPtr pStringPtr);
  250. // Print with CR
  251. extern pascal void SAL_PrintLine(const StringPtr pStringPtr);
  252. // Print a buffer full of text with CR
  253. extern pascal void SAL_PrintTextHandle(const Handle pText_Hdl);
  254.  
  255. extern pascal void SAL_SetCursorBusy(void);
  256. extern pascal void SAL_DefaultCursor(void);
  257. //-----------------------------------------------------------------------------
  258. //    Controls
  259. //-----------------------------------------------------------------------------
  260. extern pascal Rect SAL_GetGroupBounds(GroupRecRef pGroupRecRef);
  261.  
  262. extern pascal OSErr SAL_InstallCheckBox(const SInt32 pButtonID,
  263.                                         const WindowPtr pWindowPtr,
  264.                                         const Str255 pName,
  265.                                         const Rect* pRect,
  266.                                         const UInt8 pCmdKey,
  267.                                         const SInt16 pInitialValue,
  268.                                         const SalButtonHit_ProcPtr pBHP,
  269.                                         const SalButtonUpdate_ProcPtr pBUP);
  270.  
  271. extern pascal OSErr SAL_InstallPushButton(const SInt32 pButtonID,
  272.                                           const WindowPtr pWindowPtr,
  273.                                           const Str255 pName,
  274.                                           const Rect* pRect,
  275.                                           const UInt8 pCmdKey,
  276.                                           const SalButtonHit_ProcPtr pBHP,
  277.                                           const SalButtonUpdate_ProcPtr pBUP);
  278.  
  279. extern pascal OSErr SAL_InstallRadioGroup(const SInt32 pGroupID,
  280.                                           const WindowPtr pWindowPtr,
  281.                                           const SInt16 pCount,
  282.                                           const Str255 pTitle,
  283.                                           const StringArray_Ptr pNames,
  284.                                           const Rect* pRect,
  285.                                           const SInt16 pDefaultItem,
  286.                                           const SInt16 pSpacingH,
  287.                                           const SInt16 pSpacingV,
  288.                                           const SInt16 pButtonHeight,
  289.                                           const SInt16 pButtonWidth,
  290.                                           const SalGroupPreHit_ProcPtr pPreGHP,
  291.                                           const SalGroupPostHit_ProcPtr pPostGHP,
  292.                                           const SalGroupUpdate_ProcPtr pGUP);
  293.  
  294. extern pascal void SAL_DisableMe(void);
  295. extern pascal void SAL_EnableMe(void);
  296.  
  297. extern pascal void SAL_SetTitle(const StringPtr pTitle);
  298. //-----------------------------------------------------------------------------
  299. //    Error Unit
  300. //-----------------------------------------------------------------------------
  301. extern pascal void SAL_ErrorMessage(const StringPtr pMessage,
  302.                                     const OSStatus pOSStatus,
  303.                                     const SInt16 pFlags);
  304. //-----------------------------------------------------------------------------
  305. //    Lists
  306. //-----------------------------------------------------------------------------
  307. extern pascal OSErr SAL_InstallList(const SInt32 pListID,
  308.                                     const WindowPtr pWindowPtr,
  309.                                     const Point pCellSize,
  310.                                     const Rect* pRect,
  311.                                     const SalListHit_ProcPtr pLHP,
  312.                                     const SalListTrack_ProcPtr pLTP,
  313.                                     const SalListUpdate_ProcPtr pLUP,
  314.                                     const SalListDrawCell_ProcPtr pLDCP,
  315.                                     const ListDefUPP pLDefUPP,
  316.                                     const SInt32 pFlags);
  317. //-----------------------------------------------------------------------------
  318. //    Menus
  319. //-----------------------------------------------------------------------------
  320. extern pascal OSErr SAL_AttachMenuToMenuItem(const SInt16 pMenuIDToAdd,
  321.                                              const SInt16 pAttachMenuID,
  322.                                              const SInt16 pAttachMenuItem);
  323.  
  324. extern pascal OSErr SAL_InstallFontMenu(const SInt16 pMenuID,
  325.                                         const Str255 pName,
  326.                                         const Boolean pIsHeirarchical,
  327.                                         const SalMenuHit_ProcPtr pMHP,
  328.                                         const SalMenuUpdate_ProcPtr pMUP);
  329.  
  330. extern pascal OSErr SAL_InstallMenu(const SInt16 pMenuID,
  331.                                     const Str255 pMenuTitle,
  332.                                     const Boolean pIsHierarchical,
  333.                                     const SalMenuHit_ProcPtr pMHP,
  334.                                     const SalMenuUpdate_ProcPtr pMUP);
  335.  
  336. extern pascal OSErr SAL_InstallMenuItem(const SInt16 pMenuID,
  337.                                         const SInt16 pMenuItem,
  338.                                         const Str255 pMenuTitle,
  339.                                         const char pMarkChar,
  340.                                         const char pCmdChar,
  341.                                         const SalMenuHit_ProcPtr pMHP,
  342.                                         const SalMenuUpdate_ProcPtr pMUP);
  343.  
  344. extern pascal OSErr SAL_InstallResourceMenu(const SInt16 pMenuID,
  345.                                             const Str255 pMenuTitle,
  346.                                             const OSType pResType,
  347.                                             const Boolean pIsHiearchical,
  348.                                             const SalMenuHit_ProcPtr pMHP,
  349.                                             const SalMenuUpdate_ProcPtr pMUP);
  350. //-----------------------------------------------------------------------------
  351. //    Objects
  352. //-----------------------------------------------------------------------------
  353. extern pascal void SAL_DisableObject(const SInt32 pThing);
  354. extern pascal void SAL_EnableObject(const SInt32 pThing);
  355.  
  356. extern pascal SInt32 SAL_GetObjectRefCon(const SInt32 pThing);
  357. extern pascal void SAL_SetObjectRefCon(const SInt32 pThing,
  358.                                        SInt32 pRefCon);
  359.  
  360. extern pascal Handle SAL_GetObjectHandle(const SInt32 pThing);
  361. //-----------------------------------------------------------------------------
  362. //    ProcUnit
  363. //-----------------------------------------------------------------------------
  364. extern pascal void SAL_InstallIdleProc(const SalEvent_ProcPtr pEventProc);
  365. extern pascal void SAL_InstallAboutProc(const SalAbout_ProcPtr pAboutProc);
  366. //-----------------------------------------------------------------------------
  367. //    ScrollBars
  368. //-----------------------------------------------------------------------------
  369. extern pascal OSErr SAL_InstallScrollBar(const SInt32 pButtonID,
  370.                                          const WindowPtr pWindowPtr,
  371.                                          const Str255 pName,
  372.                                          const Rect* pRect,
  373.                                          const UInt8 pCmdKey,
  374.                                          const SalAction_ProcPtr pSHP,
  375.                                          const SalAction_ProcPtr pSBP,
  376.                                          const SalAction_ProcPtr pSIP);
  377. //-----------------------------------------------------------------------------
  378. //    Utils
  379. //-----------------------------------------------------------------------------
  380. extern pascal SInt8 SAL_LockHandle(Handle pHandle);
  381. extern pascal void SAL_UnlockHandle(Handle pHandle,
  382.                                     const SInt8 pState);
  383.  
  384. // This Sets a rects anchor point
  385. extern pascal void SAL_SetRectLocation(Rect* pRect,
  386.                                        const SInt16 pH,
  387.                                        const SInt16 pV);
  388.  
  389. // This Sets its size without changing its position
  390. extern pascal void SAL_SetRectDimensions(Rect* pRect,
  391.                                          const SInt16 pH,
  392.                                          const SInt16 pV);
  393. //-----------------------------------------------------------------------------
  394. //    Windows
  395. //-----------------------------------------------------------------------------
  396. // Deprecated funtion do not use
  397. extern pascal SInt16 SAL_GetDocWindow(SInt16 pResID);
  398. extern pascal SInt16 SAL_GetDocumentWindow(const SInt16 pResID,
  399.                                            WindowPtr* pWindowPtr);
  400. extern pascal void SAL_SetWindowUpdateProc(const WindowPtr pWindowPtr,
  401.                                            const SalWindowUpdate_ProcPtr pWindowUpdateProc);
  402. extern pascal void SAL_SetWindowResizeProc(const WindowPtr pWindowPtr,
  403.                                            const SalWindowResize_ProcPtr pWRP);
  404. extern pascal OSErr SAL_DoWindowClose(const WindowPtr pWindowPtr);
  405. //-----------------------------------------------------------------------------
  406. #if PRAGMA_STRUCT_ALIGN
  407. #pragma options align=reset
  408. #elif PRAGMA_STRUCT_PACKPUSH
  409. #pragma pack(pop)
  410. #elif PRAGMA_STRUCT_PACK
  411. #pragma pack()
  412. #endif
  413.  
  414. #ifdef PRAGMA_IMPORT_OFF
  415. #pragma import off
  416. #elif PRAGMA_IMPORT
  417. #pragma import reset
  418. #endif
  419.  
  420. #ifdef __cplusplus
  421. }
  422. #endif
  423.  
  424. #endif SAL_PUBLIC_H
  425.  
  426.